# -*- coding: utf-8 -*-
# @Time    : 2022/5/8 23:08
# @Author  : wise-wjw
# @File    : .py
# @Software: PyCharm

"""依据作者.xlsx数据集挖掘合著者关系（设置支持度0.2置信度0.6）"""

import pandas as pd
from work8.Apriori import apriori

# TODO:1.设置最小支持度计数和最小置信度
min_sup = 0.2 * 18  # 即最小支持度计数为3.6，已知项数为18
min_conf = 0.6
# 最大K项集
K = 4

# TODO:2.读入文件，并查看数据信息
# 文件路径
file_path = r'resources/作者.xlsx'  # r对路径进行转义，windows需要
# 读取文件，并以DataFrame格式存储
authorDf = pd.read_excel(file_path, header=0)  # header=0表示第一行是表头，自动去除
# 维度与行数
print("数据集的维度与行数:", authorDf.shape)
authorDf_row_num, authorDf_col_num = authorDf.shape
print("author dataset has {0} rows and {1} cols!\n".format(authorDf_row_num, authorDf_col_num))
# 查看authorDf前五行数据
print(authorDf.head(), "\n")

# TODO:3.数据预处理，提取有用的信息，并将数据格式转换成Apriori函数的输入数据格式
# 截取作者信息
author_relation_list = list(authorDf['作者'])  # 将DataFrame转换为列表，['作者1，作者2，作者3，作者4', '作者3，作者2，作者4，作者5', ... ]
author_relation_set = []  # 合著关系列表（每个元素即一本书的合著作者列表）
# 将合著关系列表中的合著作者单独用列表表示（即将字符串转换为列表）
for x in author_relation_list:
    item = x.split('，')  # 切分列表，结果为['作者1', '作者2', '作者3', '作者4']
    author_relation_set.append(item)  # 将每个合著关系的作者列表添加到总的合著关系列表中
print("总的合著关系列表:\n", author_relation_set, "\n")

# TODO:4.调用Apriori算法，输出挖掘的频繁项集和强关联规则
apriori(author_relation_set, min_sup, min_conf, K)
